package persistencia.consultas;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

import pool.Conexion;
import valueObjects.VODuenio;
import valueObjects.VOMascota;


public class AccesoBD {


		private Consultas c;
		private PreparedStatement pstmt;
		private ResultSet rs;
	
		
		public boolean existeDuenio(Conexion icon, int ced){
			c = new Consultas();
			String query = c.existeDuenio();
			
			try {
				pstmt = icon.getConnection().prepareStatement(query);
				pstmt.setInt(1, ced);
				ResultSet rs = pstmt.executeQuery();
				if(rs.next())
					return true;
				else
					return false;
				
				
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
			
			return false;
		}
			
	
		public void insertarDuenio(Conexion icon, VODuenio voDue){
			c = new Consultas();
			String insertar = c.insertarDuenio();
			try {
				pstmt = icon.getConnection().prepareStatement(insertar);
				pstmt.setInt(1, voDue.getCedula());
				pstmt.setString(2, voDue.getNombre());
				pstmt.setString(3, voDue.getApellido());
				pstmt.executeUpdate();
				//int r = pstmt.executeUpdate();
				//if(r>0) ingreso correctamente
				
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
		}
	
	
		
		public boolean existeMascota(Connection con, String apodo){
			c = new Consultas();
			String query = c.existeMascota();
			
			try {
				pstmt = con.prepareStatement(query);
				pstmt.setString(1, apodo);
				ResultSet rs = pstmt.executeQuery();
				if(rs.next())
					return true;
				else
					return false;
				
				
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
			
			return false;
		}
	
		
		
		public void insertarMascota(Connection con, VOMascota voMas){
			c = new Consultas();
			String insertar = c.insertarMascota();
			try {
				pstmt = con.prepareStatement(insertar);
				pstmt.setString(1, voMas.getApodo());
				pstmt.setString(2, voMas.getRaza());
				pstmt.setInt(3, voMas.getCedulaDuenio());
				pstmt.executeUpdate();
				//int r = pstmt.executeUpdate();
				//if(r>0) ingreso correctamente
				
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
		}

		public List<VODuenio> listarDuenios(Connection con){
			List<VODuenio> lista = new LinkedList<VODuenio>();
			c = new Consultas();
			String listarDuenios = c.listarDuenios();
			try {
				pstmt = con.prepareStatement(listarDuenios);
				rs = pstmt.executeQuery(listarDuenios);
				while(rs.next()){
					int cedula = rs.getInt("cedula");
					String nombre = rs.getString("nombre");
					String apellido = rs.getString("apellido");
					VODuenio voDue = new VODuenio(cedula, nombre, apellido);
					lista.add(voDue);
				}
				
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
			
			return lista;
		}
	

		public List<VOMascota> listarMascotas(Connection con){
			List<VOMascota> lista = new LinkedList<VOMascota>();
			c = new Consultas();
			String listarMascotas = c.listarMascotas();
			try {
				pstmt = con.prepareStatement(listarMascotas);
				rs = pstmt.executeQuery(listarMascotas);
				while(rs.next()){
					String apodo = rs.getString("apodo");
					String raza = rs.getString("raza");
					int cedulaDuenio = rs.getInt("cedulaDuenio");
					VOMascota voMas = new VOMascota(apodo, raza, cedulaDuenio);
					lista.add(voMas);
				}
				
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
			
			return lista;
		}
	

		
		public void eliminarDuenio(Connection con, int ced){
			c = new Consultas();
			String borrarDuenio = c.borrarDuenioMascotas();
			try {
				pstmt = con.prepareStatement(borrarDuenio);
				pstmt.executeUpdate();
				
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		

		
		public void eliminarMascotas(Connection con, int ced){
			c = new Consultas();
			String borrarMascotas = c.borrarMascotas();
			try {
				pstmt = con.prepareStatement(borrarMascotas);
				pstmt.executeUpdate();
				
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}



	
	
	
	
}
